// 对于axios进行二次封装
import axios from "axios";
import store from '@/store';
const requests = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 10000,
});

// 请求拦截器
requests.interceptors.request.use((config) => {
  // 需要携带token带给服务器
  if (store.getters['user/token']) {
    config.headers['Authorization'] = store.getters['user/token'] // 这个 headers['token']要和后端商量，有可能是 headers['Authorization']
  }
  return config;
},
error => {
  return Promise.reject(error)
});

// 响应拦截器
requests.interceptors.response.use(
  (response) => {
    const data = response.data;
    if (data && data.code === 200) {
      return data;
    } else if (data.size) {
      return data;
    } else {
      return data;
      // return Promise.reject(new Error(data));
    }
  },
  (error) => {
    if (error.response) {
      const { data } = error.response;
      if (data.httpCode === 401) {
        // 处理未授权的情况
        return Promise.reject(data);
      } else {
        switch (data.statusCode) {
          case 429:
            // 处理 429 错误
            break;
          default:
            // 默认错误处理
            break;
        }
        return Promise.resolve(data);
      }
    } else {
      // 处理其他未知错误
      return Promise.reject(error);
    }
  }
);
export default requests;
